pandas
入門pandas
是 Python 中的一個強大的數據分析工具,專為數據處理和操作設計。pandas
允許我們以表格形式處理數據,類似於電子表格或 SQL 資料庫。它提供了兩種主要的數據結構:Series
和 DataFrame
,適合處理一維和二維數據。
pandas
要使用 pandas
,首先需要安裝該模組,可以使用以下指令:
pip install pandas
Series
Series
是一種一維數據結構,類似於一列數據,並且帶有索引。
import pandas as pd
# 創建一個 Series
data = pd.Series([10, 20, 30, 40], index=["a", "b", "c", "d"])
print(data)
輸出:
a 10
b 20
c 30
d 40
dtype: int64
DataFrame
DataFrame
是 pandas
中最常用的數據結構,類似於表格,每列是一個 Series
。可以從字典、CSV 文件等創建。
data = {
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 35],
"City": ["New York", "Los Angeles", "Chicago"]
}
df = pd.DataFrame(data)
print(df)
輸出:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
pandas
可以輕鬆地從各種數據來源(如 CSV、Excel、SQL)讀取數據。這裡介紹如何從 CSV 文件中導入數據。
df = pd.read_csv("data.csv")
print(df.head()) # 查看數據的前 5 行
df.to_csv("output.csv", index=False)
可以通過列名稱來選擇某一列數據。
print(df["Name"])
使用 loc
或 iloc
可以選擇特定行。
loc
:根據標籤選擇。iloc
:根據索引位置選擇。# 使用 loc 根據標籤選擇
print(df.loc[0])
# 使用 iloc 根據位置選擇
print(df.iloc[1])
pandas
提供了許多統計函數,如 mean()
、sum()
、count()
等。
print(df["Age"].mean()) # 計算年齡的平均值
可以通過布林條件過濾數據。例如,篩選出年齡大於 30 的人。
filtered_df = df[df["Age"] > 30]
print(filtered_df)
數據中經常會有缺失值,可以使用 dropna()
來刪除缺失值,或者使用 fillna()
填補缺失值。
# 刪除包含缺失值的行
df.dropna(inplace=True)
# 用特定值填補缺失值
df.fillna(0, inplace=True)
可以使用 drop_duplicates()
方法來刪除重複的數據。
df.drop_duplicates(inplace=True)
對於缺失數據,可以選擇刪除或填充。之前提到過 dropna()
,這裡補充一下如何用平均值或中位數填充缺失值。
df["Age"].fillna(df["Age"].mean(), inplace=True) # 用平均值填充
可以使用 replace()
函數將特定值替換為其他值。
df["City"].replace("New York", "NY", inplace=True)
groupby()
可以使用 groupby()
對數據進行分組,並對每組數據執行聚合操作。
範例:按城市分組,並計算每個城市的平均年齡。
grouped = df.groupby("City")["Age"].mean()
print(grouped)
輸出:
City
Chicago 35
Los Angeles 30
NY 25
Name: Age, dtype: float64
agg()
方法允許對數據執行多種聚合操作。
agg_result = df.groupby("City").agg({"Age": ["mean", "max"], "Salary": "sum"})
print(agg_result)
pandas
提供了 merge()
函數,可以類似 SQL 的方式合併兩個 DataFrame。
merged_df = pd.merge(df1, df2, on="ID")
可以使用 concat()
將多個 DataFrame 縱向拼接在一起。
concatenated_df = pd.concat([df1, df2])
pivot_table
進行數據透視pivot_table()
可以用來創建數據透視表,它是一個強大的數據匯總工具,能夠根據多個維度進行數據聚合。
範例:創建一個按城市和性別進行平均薪水匯總的數據透視表。
pivot = df.pivot_table(values="Salary", index="City", columns="Gender", aggfunc="mean")
print(pivot)
pandas
可以與 matplotlib
無縫集成,用於數據的快速可視化。
import matplotlib.pyplot as plt
df["Age"].plot(kind="line")
plt.show()
df["City"].value_counts().plot(kind="bar")
plt.show()
df["Salary"].plot(kind="hist", bins=10)
plt.show()
可以使用 apply()
函數來對 DataFrame 中的數據進行動態操作。例如,創建一個新列來表示年齡的分類。
def categorize_age(age):
if age < 30:
return "Young"
elif age < 40:
return "Middle-aged"
else:
return "Senior"
df["Age Group"] = df["Age"].apply(categorize_age)
print(df)
通過 pandas
操作,我們可以輕鬆地對數據進行清理、聚合、合併和可視化分析。pandas
的靈活性和強大的 API 讓它成為數據科學領域中不可或缺的工具。通過學習這些技術,你可以更有效地處理大規模的數據集,並為進一步的數據分析或機器學習奠定基礎。